package com.ruoyi.drone.mapper;

import java.util.List;
import com.ruoyi.drone.domain.DroneTaskApplication;

/**
 * 任务接单Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface DroneTaskApplicationMapper 
{
    /**
     * 查询任务接单
     * 
     * @param applicationId 任务接单主键
     * @return 任务接单
     */
    public DroneTaskApplication selectDroneTaskApplicationByApplicationId(Long applicationId);

    /**
     * 查询任务接单列表
     * 
     * @param droneTaskApplication 任务接单
     * @return 任务接单集合
     */
    public List<DroneTaskApplication> selectDroneTaskApplicationList(DroneTaskApplication droneTaskApplication);

    /**
     * 根据任务ID查询任务接单列表
     * 
     * @param taskId 任务ID
     * @return 任务接单集合
     */
    public List<DroneTaskApplication> selectDroneTaskApplicationListByTaskId(Long taskId);

    /**
     * 根据飞手ID查询任务接单列表
     * 
     * @param pilotId 飞手ID
     * @return 任务接单集合
     */
    public List<DroneTaskApplication> selectDroneTaskApplicationListByPilotId(Long pilotId);

    /**
     * 根据任务ID和飞手ID查询任务接单
     * 
     * @param taskId 任务ID
     * @param pilotId 飞手ID
     * @return 任务接单
     */
    public DroneTaskApplication selectDroneTaskApplicationByTaskIdAndPilotId(Long taskId, Long pilotId);

    /**
     * 新增任务接单
     * 
     * @param droneTaskApplication 任务接单
     * @return 结果
     */
    public int insertDroneTaskApplication(DroneTaskApplication droneTaskApplication);

    /**
     * 修改任务接单
     * 
     * @param droneTaskApplication 任务接单
     * @return 结果
     */
    public int updateDroneTaskApplication(DroneTaskApplication droneTaskApplication);

    /**
     * 删除任务接单
     * 
     * @param applicationId 任务接单主键
     * @return 结果
     */
    public int deleteDroneTaskApplicationByApplicationId(Long applicationId);

    /**
     * 批量删除任务接单
     * 
     * @param applicationIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDroneTaskApplicationByApplicationIds(Long[] applicationIds);

    /**
     * 检查任务和飞手的接单记录是否已存在
     * 
     * @param taskId 任务ID
     * @param pilotId 飞手ID
     * @return 结果
     */
    public int checkTaskApplicationUnique(Long taskId, Long pilotId);

    /**
     * 更新任务接单状态
     * 
     * @param droneTaskApplication 任务接单
     * @return 结果
     */
    public int updateDroneTaskApplicationStatus(DroneTaskApplication droneTaskApplication);

    /**
     * 审核任务接单
     * 
     * @param droneTaskApplication 任务接单
     * @return 结果
     */
    public int auditDroneTaskApplication(DroneTaskApplication droneTaskApplication);
}
